/**
 * 引用数据类型， 如果使用typeof 就不太使用了， 因为， object， array， 就每办法通过这个实现
 */
const arr = [1, 2]
console.log(typeof arr)
// 这里这个instanceof的原理是左侧的隐式原型是否指向右侧的构造函数
console.log(arr instanceof Array)
console.log( instanceofV1(arr, Array) )

function instanceofV1(L, R) {
    const baseType = ['null', 'undefined', 'boolean', "number", "string"]
    if(baseType.includes(L)) return false
    while (true) {
        if(L.__proto__ === null) return false
        if(L.__proto__ === R.prototype) return true
        L = L.__proto__
    }
}

function instanceofVV(left, right) {
    const baseType = ['undefined', 'boolean','number','string', 'symbol']
    if(baseType.includes(typeof left)) return false;
    const RP = right.property
    while(true){
        if(left === null) return false
        if(left === RP) return true
        left = left.__proto__
    }
}
